

<!DOCTYPE html>
<html class="writer-html5" lang="zh" >
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>远程登录控制台 &mdash; Scrapy 2.3.0 文档</title>
  

  
  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tooltipster.custom.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tooltipster.bundle.min.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tooltipster-sideTip-shadow.min.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tooltipster-sideTip-punk.min.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tooltipster-sideTip-noir.min.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tooltipster-sideTip-light.min.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tooltipster-sideTip-borderless.min.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/micromodal.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/sphinx_rtd_theme.css" type="text/css" />

  
  
  
  

  
  <!--[if lt IE 9]>
    <script src="../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
        <script src="../_static/jquery.js"></script>
        <script src="../_static/underscore.js"></script>
        <script src="../_static/doctools.js"></script>
        <script src="../_static/language_data.js"></script>
        <script src="../_static/js/hoverxref.js"></script>
        <script src="../_static/js/tooltipster.bundle.min.js"></script>
        <script src="../_static/js/micromodal.min.js"></script>
    
    <script type="text/javascript" src="../_static/js/theme.js"></script>

    
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="next" title="Web服务" href="webservice.html" />
    <link rel="prev" title="发送电子邮件" href="email.html" /> 
</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="../index.html" class="icon icon-home" alt="Documentation Home"> Scrapy
          

          
          </a>

          
            
            
              <div class="version">
                2.3
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        
        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <p class="caption"><span class="caption-text">第一步</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../intro/overview.html">Scrapy一目了然</a></li>
<li class="toctree-l1"><a class="reference internal" href="../intro/install.html">安装指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../intro/tutorial.html">Scrapy 教程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../intro/examples.html">实例</a></li>
</ul>
<p class="caption"><span class="caption-text">基本概念</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="commands.html">命令行工具</a></li>
<li class="toctree-l1"><a class="reference internal" href="spiders.html">蜘蛛</a></li>
<li class="toctree-l1"><a class="reference internal" href="selectors.html">选择器</a></li>
<li class="toctree-l1"><a class="reference internal" href="items.html">项目</a></li>
<li class="toctree-l1"><a class="reference internal" href="loaders.html">项目加载器</a></li>
<li class="toctree-l1"><a class="reference internal" href="shell.html">Scrapy shell</a></li>
<li class="toctree-l1"><a class="reference internal" href="item-pipeline.html">项目管道</a></li>
<li class="toctree-l1"><a class="reference internal" href="feed-exports.html">Feed 导出</a></li>
<li class="toctree-l1"><a class="reference internal" href="request-response.html">请求和响应</a></li>
<li class="toctree-l1"><a class="reference internal" href="link-extractors.html">链接提取器</a></li>
<li class="toctree-l1"><a class="reference internal" href="settings.html">设置</a></li>
<li class="toctree-l1"><a class="reference internal" href="exceptions.html">例外情况</a></li>
</ul>
<p class="caption"><span class="caption-text">内置服务</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="logging.html">登录</a></li>
<li class="toctree-l1"><a class="reference internal" href="stats.html">统计数据集合</a></li>
<li class="toctree-l1"><a class="reference internal" href="email.html">发送电子邮件</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">远程登录控制台</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#how-to-access-the-telnet-console">如何访问telnet控制台</a></li>
<li class="toctree-l2"><a class="reference internal" href="#available-variables-in-the-telnet-console">telnet控制台中的可用变量</a></li>
<li class="toctree-l2"><a class="reference internal" href="#telnet-console-usage-examples">telnet控制台使用示例</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#view-engine-status">查看发动机状态</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pause-resume-and-stop-the-scrapy-engine">暂停、恢复和停止报废发动机</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#telnet-console-signals">Telnet控制台信号</a></li>
<li class="toctree-l2"><a class="reference internal" href="#telnet-settings">远程登录设置</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#telnetconsole-port">TELNETCONSOLE_PORT</a></li>
<li class="toctree-l3"><a class="reference internal" href="#telnetconsole-host">TELNETCONSOLE_HOST</a></li>
<li class="toctree-l3"><a class="reference internal" href="#telnetconsole-username">TELNETCONSOLE_USERNAME</a></li>
<li class="toctree-l3"><a class="reference internal" href="#telnetconsole-password">TELNETCONSOLE_PASSWORD</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="webservice.html">Web服务</a></li>
</ul>
<p class="caption"><span class="caption-text">解决具体问题</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../faq.html">常见问题</a></li>
<li class="toctree-l1"><a class="reference internal" href="debug.html">调试spiders</a></li>
<li class="toctree-l1"><a class="reference internal" href="contracts.html">蜘蛛合约</a></li>
<li class="toctree-l1"><a class="reference internal" href="practices.html">常用做法</a></li>
<li class="toctree-l1"><a class="reference internal" href="broad-crawls.html">宽爬行</a></li>
<li class="toctree-l1"><a class="reference internal" href="developer-tools.html">使用浏览器的开发人员工具进行抓取</a></li>
<li class="toctree-l1"><a class="reference internal" href="dynamic-content.html">选择动态加载的内容</a></li>
<li class="toctree-l1"><a class="reference internal" href="leaks.html">调试内存泄漏</a></li>
<li class="toctree-l1"><a class="reference internal" href="media-pipeline.html">下载和处理文件和图像</a></li>
<li class="toctree-l1"><a class="reference internal" href="deploy.html">部署蜘蛛</a></li>
<li class="toctree-l1"><a class="reference internal" href="autothrottle.html">AutoThrottle 扩展</a></li>
<li class="toctree-l1"><a class="reference internal" href="benchmarking.html">标杆管理</a></li>
<li class="toctree-l1"><a class="reference internal" href="jobs.html">作业：暂停和恢复爬行</a></li>
<li class="toctree-l1"><a class="reference internal" href="coroutines.html">协同程序</a></li>
<li class="toctree-l1"><a class="reference internal" href="asyncio.html">asyncio</a></li>
</ul>
<p class="caption"><span class="caption-text">扩展Scrapy</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="architecture.html">体系结构概述</a></li>
<li class="toctree-l1"><a class="reference internal" href="downloader-middleware.html">下载器中间件</a></li>
<li class="toctree-l1"><a class="reference internal" href="spider-middleware.html">蜘蛛中间件</a></li>
<li class="toctree-l1"><a class="reference internal" href="extensions.html">扩展</a></li>
<li class="toctree-l1"><a class="reference internal" href="api.html">核心API</a></li>
<li class="toctree-l1"><a class="reference internal" href="signals.html">信号</a></li>
<li class="toctree-l1"><a class="reference internal" href="exporters.html">条目导出器</a></li>
</ul>
<p class="caption"><span class="caption-text">其余所有</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../news.html">发行说明</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">为 Scrapy 贡献</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versioning.html">版本控制和API稳定性</a></li>
</ul>

            
          
        </div>
        
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../index.html">Scrapy</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
        
      <li>远程登录控制台</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="telnet-console">
<span id="topics-telnetconsole"></span><h1>远程登录控制台<a class="headerlink" href="#telnet-console" title="永久链接至标题">¶</a></h1>
<p>Scrapy附带一个内置的telnet控制台，用于检查和控制Scrapy运行过程。telnet控制台只是一个运行在scrappy进程内部的常规python shell，因此您可以从中做任何事情。</p>
<p>telnet控制台是一个 <a class="reference internal" href="extensions.html#topics-extensions-ref"><span class="std std-ref">built-in Scrapy extension</span></a> 它在默认情况下是启用的，但如果需要，您也可以禁用它。有关扩展本身的更多信息，请参阅 <a class="reference internal" href="extensions.html#topics-extensions-ref-telnetconsole"><span class="std std-ref">Telnet控制台扩展</span></a> .</p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-1466963416408457"
     data-ad-slot="8850786025"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<div class="admonition warning">
<p class="admonition-title">警告</p>
<p>通过公共网络使用telnet控制台是不安全的，因为telnet不提供任何传输层安全性。拥有用户名/密码验证不会改变这一点。</p>
<p>预期用途是本地连接到正在运行的Scrapy Spider（Spider进程和Telnet客户端在同一台计算机上）或通过安全连接（VPN、SSH通道）进行连接。请避免在不安全的连接上使用telnet控制台，或使用 <a class="reference internal" href="settings.html#std-setting-TELNETCONSOLE_ENABLED"><code class="xref std std-setting docutils literal notranslate"><span class="pre">TELNETCONSOLE_ENABLED</span></code></a> 选择权。</p>
</div>
<div class="section" id="how-to-access-the-telnet-console">
<h2>如何访问telnet控制台<a class="headerlink" href="#how-to-access-the-telnet-console" title="永久链接至标题">¶</a></h2>
<p>telnet控制台侦听中定义的TCP端口 <a class="reference internal" href="#std-setting-TELNETCONSOLE_PORT"><code class="xref std std-setting docutils literal notranslate"><span class="pre">TELNETCONSOLE_PORT</span></code></a> 设置，默认为 <code class="docutils literal notranslate"><span class="pre">6023</span></code> . 要访问控制台，您需要键入：</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>telnet localhost 6023
Trying localhost...
Connected to localhost.
Escape character is &#39;^]&#39;.
Username:
Password:
&gt;&gt;&gt;
</pre></div>
</div>
<p>默认用户名为 <code class="docutils literal notranslate"><span class="pre">scrapy</span></code> 密码是自动生成的。自动生成的密码可以在垃圾日志上看到，如下例所示：</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>2018-10-16 14:35:21 [scrapy.extensions.telnet] INFO: Telnet Password: 16f92501e8a59326
</pre></div>
</div>
<p>默认用户名和密码可以被设置覆盖 <a class="reference internal" href="#std-setting-TELNETCONSOLE_USERNAME"><code class="xref std std-setting docutils literal notranslate"><span class="pre">TELNETCONSOLE_USERNAME</span></code></a> 和 <a class="reference internal" href="#std-setting-TELNETCONSOLE_PASSWORD"><code class="xref std std-setting docutils literal notranslate"><span class="pre">TELNETCONSOLE_PASSWORD</span></code></a> .</p>
<div class="admonition warning">
<p class="admonition-title">警告</p>
<p>用户名和密码仅提供有限的保护，因为telnet不使用安全传输-默认情况下，即使设置了用户名和密码，通信也不会加密。</p>
</div>
<p>您需要在Windows和大多数Linux发行版中默认安装的telnet程序。</p>
</div>
<div class="section" id="available-variables-in-the-telnet-console">
<h2>telnet控制台中的可用变量<a class="headerlink" href="#available-variables-in-the-telnet-console" title="永久链接至标题">¶</a></h2>
<p>telnet控制台就像一个运行在scrappy进程内部的常规python shell，所以您可以从中做任何事情，包括导入新模块等。</p>
<p>但是，telnet控制台附带一些为方便起见而定义的默认变量：</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 19%" />
<col style="width: 81%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>捷径</p></th>
<th class="head"><p>描述</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">crawler</span></code></p></td>
<td><p>残废的爬虫 (<a class="reference internal" href="api.html#scrapy.crawler.Crawler" title="scrapy.crawler.Crawler"><code class="xref py py-class docutils literal notranslate"><span class="pre">scrapy.crawler.Crawler</span></code></a> 对象）</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">engine</span></code></p></td>
<td><p>crawler.engine属性</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">spider</span></code></p></td>
<td><p>主动蜘蛛</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">slot</span></code></p></td>
<td><p>发动机槽</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">extensions</span></code></p></td>
<td><p>扩展管理器（crawler.extensions属性）</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">stats</span></code></p></td>
<td><p>stats收集器（crawler.stats属性）</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">settings</span></code></p></td>
<td><p>Scrapy设置对象（crawler.settings属性）</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">est</span></code></p></td>
<td><p>打印发动机状态报告</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">prefs</span></code></p></td>
<td><p>内存调试（请参见 <a class="reference internal" href="leaks.html#topics-leaks"><span class="std std-ref">调试内存泄漏</span></a> ）</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">p</span></code></p></td>
<td><p>到的快捷方式 <a class="reference external" href="https://docs.python.org/3/library/pprint.html#pprint.pprint" title="(在 Python v3.9)"><code class="xref py py-func docutils literal notranslate"><span class="pre">pprint.pprint()</span></code></a> 功能</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">hpy</span></code></p></td>
<td><p>内存调试（请参见 <a class="reference internal" href="leaks.html#topics-leaks"><span class="std std-ref">调试内存泄漏</span></a> ）</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="telnet-console-usage-examples">
<h2>telnet控制台使用示例<a class="headerlink" href="#telnet-console-usage-examples" title="永久链接至标题">¶</a></h2>
<p>以下是使用telnet控制台可以执行的一些示例任务：</p>
<div class="section" id="view-engine-status">
<h3>查看发动机状态<a class="headerlink" href="#view-engine-status" title="永久链接至标题">¶</a></h3>
<p>你可以使用 <code class="docutils literal notranslate"><span class="pre">est()</span></code> scrapy引擎使用telnet控制台快速显示其状态的方法：</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>telnet localhost 6023
&gt;&gt;&gt; est()
Execution engine status

time()-engine.start_time                        : 8.62972998619
engine.has_capacity()                           : False
len(engine.downloader.active)                   : 16
engine.scraper.is_idle()                        : False
engine.spider.name                              : followall
engine.spider_is_idle(engine.spider)            : False
engine.slot.closing                             : False
len(engine.slot.inprogress)                     : 16
len(engine.slot.scheduler.dqs or [])            : 0
len(engine.slot.scheduler.mqs)                  : 92
len(engine.scraper.slot.queue)                  : 0
len(engine.scraper.slot.active)                 : 0
engine.scraper.slot.active_size                 : 0
engine.scraper.slot.itemproc_size               : 0
engine.scraper.slot.needs_backout()             : False
</pre></div>
</div>
</div>
<div class="section" id="pause-resume-and-stop-the-scrapy-engine">
<h3>暂停、恢复和停止报废发动机<a class="headerlink" href="#pause-resume-and-stop-the-scrapy-engine" title="永久链接至标题">¶</a></h3>
<p>暂停：</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>telnet localhost 6023
&gt;&gt;&gt; engine.pause()
&gt;&gt;&gt;
</pre></div>
</div>
<p>恢复：</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>telnet localhost 6023
&gt;&gt;&gt; engine.unpause()
&gt;&gt;&gt;
</pre></div>
</div>
<p>停止：：</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>telnet localhost 6023
&gt;&gt;&gt; engine.stop()
Connection closed by foreign host.
</pre></div>
</div>
</div>
</div>
<div class="section" id="telnet-console-signals">
<h2>Telnet控制台信号<a class="headerlink" href="#telnet-console-signals" title="永久链接至标题">¶</a></h2>
<span class="target" id="std-signal-update_telnet_vars"><span id="std:signal-update_telnet_vars"></span></span><dl class="py function">
<dt id="scrapy.extensions.telnet.update_telnet_vars">
<code class="sig-prename descclassname">scrapy.extensions.telnet.</code><code class="sig-name descname">update_telnet_vars</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">telnet_vars</span></em><span class="sig-paren">)</span><a class="headerlink" href="#scrapy.extensions.telnet.update_telnet_vars" title="永久链接至目标">¶</a></dt>
<dd><p>在telnet控制台打开之前发送。您可以连接到这个信号来添加、删除或更新telnet本地命名空间中可用的变量。为此，需要更新 <code class="docutils literal notranslate"><span class="pre">telnet_vars</span></code> 听写你的处理程序。</p>
<dl class="field-list simple">
<dt class="field-odd">参数</dt>
<dd class="field-odd"><p><strong>telnet_vars</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(在 Python v3.9)"><em>dict</em></a>) -- telnet变量的dict</p>
</dd>
</dl>
</dd></dl>

</div>
<div class="section" id="telnet-settings">
<h2>远程登录设置<a class="headerlink" href="#telnet-settings" title="永久链接至标题">¶</a></h2>
<p>以下是控制telnet控制台行为的设置：</p>
<div class="section" id="telnetconsole-port">
<span id="std-setting-TELNETCONSOLE_PORT"></span><span id="std:setting-TELNETCONSOLE_PORT"></span><h3>TELNETCONSOLE_PORT<a class="headerlink" href="#telnetconsole-port" title="永久链接至标题">¶</a></h3>
<p>违约： <code class="docutils literal notranslate"><span class="pre">[6023,</span> <span class="pre">6073]</span></code></p>
<p>用于telnet控制台的端口范围。如果设置为 <code class="docutils literal notranslate"><span class="pre">None</span></code> 或 <code class="docutils literal notranslate"><span class="pre">0</span></code> ，使用动态分配的端口。</p>
</div>
<div class="section" id="telnetconsole-host">
<span id="std-setting-TELNETCONSOLE_HOST"></span><span id="std:setting-TELNETCONSOLE_HOST"></span><h3>TELNETCONSOLE_HOST<a class="headerlink" href="#telnetconsole-host" title="永久链接至标题">¶</a></h3>
<p>违约： <code class="docutils literal notranslate"><span class="pre">'127.0.0.1'</span></code></p>
<p>telnet控制台应该监听的接口</p>
</div>
<div class="section" id="telnetconsole-username">
<span id="std-setting-TELNETCONSOLE_USERNAME"></span><span id="std:setting-TELNETCONSOLE_USERNAME"></span><h3>TELNETCONSOLE_USERNAME<a class="headerlink" href="#telnetconsole-username" title="永久链接至标题">¶</a></h3>
<p>违约： <code class="docutils literal notranslate"><span class="pre">'scrapy'</span></code></p>
<p>用于telnet控制台的用户名</p>
</div>
<div class="section" id="telnetconsole-password">
<span id="std-setting-TELNETCONSOLE_PASSWORD"></span><span id="std:setting-TELNETCONSOLE_PASSWORD"></span><h3>TELNETCONSOLE_PASSWORD<a class="headerlink" href="#telnetconsole-password" title="永久链接至标题">¶</a></h3>
<p>违约： <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
<p>telnet控制台使用的密码，默认行为是让它自动生成。</p>
</div>
</div>
</div>


           </div>
           
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="webservice.html" class="btn btn-neutral float-right" title="Web服务" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="email.html" class="btn btn-neutral float-left" title="发送电子邮件" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        
        &copy; 版权所有 2008–2020, Scrapy developers
      <span class="lastupdated">
        最后更新于 10月 18, 2020.
      </span>

    </p>
  </div>
    
    
    
    Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
    
    <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
    
    provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  

  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
  
 
<script type="text/javascript">
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.1.0";
analytics.load("8UDQfnf3cyFSTsM4YANnW5sXmgZVILbA");
analytics.page();
}}();

analytics.ready(function () {
    ga('require', 'linker');
    ga('linker:autoLink', ['scrapinghub.com', 'crawlera.com']);
});
</script>


</body>
</html>